package com.zjcloud.jwgl.domain;

import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.zjcloud.common.annotation.Excel;
import com.zjcloud.common.core.domain.BaseEntity;

/**
 * 排课算法配置对象 ac_schedule_algorithm_config
 * 
 * @author zjcloud
 * @date 2024-06-29
 */
public class AcScheduleAlgorithmConfig extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 配置ID */
    private Long configId;

    /** 配置名称 */
    @Excel(name = "配置名称")
    private String configName;

    /** 算法类型 */
    @Excel(name = "算法类型")
    private String algorithmType;

    /** 配置参数 */
    @Excel(name = "配置参数")
    private String configParams;

    /** 是否启用 */
    @Excel(name = "是否启用")
    private String isEnabled;

    /** 优先级 */
    @Excel(name = "优先级")
    private Long priority;

    /** 描述 */
    @Excel(name = "描述")
    private String description;

    /** 种群大小 */
    @Excel(name = "种群大小")
    private Integer populationSize;

    /** 最大迭代次数 */
    @Excel(name = "最大迭代次数")
    private Integer maxGenerations;

    /** 交叉概率 */
    @Excel(name = "交叉概率")
    private Double crossoverRate;

    /** 变异概率 */
    @Excel(name = "变异概率")
    private Double mutationRate;

    /** 精英保留率 */
    @Excel(name = "精英保留率")
    private Double eliteRate;

    /** 精英比例 */
    @Excel(name = "精英比例")
    private Double eliteRatio;

    /** 收敛阈值 */
    @Excel(name = "收敛阈值")
    private Double convergenceThreshold;

    /** 是否默认配置 */
    @Excel(name = "是否默认配置")
    private Integer isDefault;

    /** 状态 */
    @Excel(name = "状态")
    private String status;

    /** 算法类型ID */
    private Long algorithmTypeId;

    /** 模板ID */
    private Long templateId;

    /** 优化策略 */
    @Excel(name = "优化策略")
    private String optimizationStrategy;

    /** 使用次数 */
    private Integer usageCount;

    /** 成功次数 */
    private Integer successCount;

    /** 平均评分 */
    private Double averageScore;

    /** 最后使用时间 */
    private java.util.Date lastUsedTime;

    /** 配置版本 */
    @Excel(name = "配置版本")
    private String version;

    public void setConfigId(Long configId) 
    {
        this.configId = configId;
    }

    public Long getConfigId() 
    {
        return configId;
    }
    
    // 为前端兼容性添加getId方法
    public Long getId() 
    {
        return configId;
    }
    
    public void setId(Long id) 
    {
        this.configId = id;
    }
    public void setConfigName(String configName) 
    {
        this.configName = configName;
    }

    public String getConfigName() 
    {
        return configName;
    }
    public void setAlgorithmType(String algorithmType) 
    {
        this.algorithmType = algorithmType;
    }

    public String getAlgorithmType() 
    {
        return algorithmType;
    }
    public void setConfigParams(String configParams) 
    {
        this.configParams = configParams;
    }

    public String getConfigParams() 
    {
        return configParams;
    }
    public void setIsEnabled(String isEnabled) 
    {
        this.isEnabled = isEnabled;
    }

    public String getIsEnabled() 
    {
        return isEnabled;
    }
    public void setPriority(Long priority) 
    {
        this.priority = priority;
    }

    public Long getPriority() 
    {
        return priority;
    }
    public void setDescription(String description) 
    {
        this.description = description;
    }

    public String getDescription() 
    {
        return description;
    }
    public void setPopulationSize(Integer populationSize) 
    {
        this.populationSize = populationSize;
    }

    public Integer getPopulationSize() 
    {
        return populationSize;
    }
    public void setMaxGenerations(Integer maxGenerations) 
    {
        this.maxGenerations = maxGenerations;
    }

    public Integer getMaxGenerations() 
    {
        return maxGenerations;
    }
    public void setCrossoverRate(Double crossoverRate) 
    {
        this.crossoverRate = crossoverRate;
    }

    public Double getCrossoverRate() 
    {
        return crossoverRate;
    }
    public void setMutationRate(Double mutationRate) 
    {
        this.mutationRate = mutationRate;
    }

    public Double getMutationRate() 
    {
        return mutationRate;
    }
    public void setEliteRate(Double eliteRate) 
    {
        this.eliteRate = eliteRate;
    }

    public Double getEliteRate() 
    {
        return eliteRate;
    }
    public void setEliteRatio(Double eliteRatio) 
    {
        this.eliteRatio = eliteRatio;
    }

    public Double getEliteRatio() 
    {
        return eliteRatio;
    }
    public void setConvergenceThreshold(Double convergenceThreshold) 
    {
        this.convergenceThreshold = convergenceThreshold;
    }

    public Double getConvergenceThreshold() 
    {
        return convergenceThreshold;
    }
    public void setIsDefault(Integer isDefault) 
    {
        this.isDefault = isDefault;
    }

    public Integer getIsDefault() 
    {
        return isDefault;
    }
    public void setStatus(String status) 
    {
        this.status = status;
    }

    public String getStatus() 
    {
        return status;
    }
    public void setAlgorithmTypeId(Long algorithmTypeId) 
    {
        this.algorithmTypeId = algorithmTypeId;
    }

    public Long getAlgorithmTypeId() 
    {
        return algorithmTypeId;
    }
    public void setTemplateId(Long templateId) 
    {
        this.templateId = templateId;
    }

    public Long getTemplateId() 
    {
        return templateId;
    }
    public void setOptimizationStrategy(String optimizationStrategy) 
    {
        this.optimizationStrategy = optimizationStrategy;
    }

    public String getOptimizationStrategy() 
    {
        return optimizationStrategy;
    }
    public void setUsageCount(Integer usageCount) 
    {
        this.usageCount = usageCount;
    }

    public Integer getUsageCount() 
    {
        return usageCount;
    }
    public void setSuccessCount(Integer successCount) 
    {
        this.successCount = successCount;
    }

    public Integer getSuccessCount() 
    {
        return successCount;
    }
    public void setAverageScore(Double averageScore) 
    {
        this.averageScore = averageScore;
    }

    public Double getAverageScore() 
    {
        return averageScore;
    }
    public void setLastUsedTime(java.util.Date lastUsedTime) 
    {
        this.lastUsedTime = lastUsedTime;
    }

    public java.util.Date getLastUsedTime() 
    {
        return lastUsedTime;
    }
    public void setVersion(String version) 
    {
        this.version = version;
    }

    public String getVersion() 
    {
        return version;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("configId", getConfigId())
            .append("configName", getConfigName())
            .append("algorithmType", getAlgorithmType())
            .append("configParams", getConfigParams())
            .append("isEnabled", getIsEnabled())
            .append("priority", getPriority())
            .append("description", getDescription())
            .append("populationSize", getPopulationSize())
            .append("maxGenerations", getMaxGenerations())
            .append("crossoverRate", getCrossoverRate())
            .append("mutationRate", getMutationRate())
            .append("eliteRate", getEliteRate())
            .append("eliteRatio", getEliteRatio())
            .append("convergenceThreshold", getConvergenceThreshold())
            .append("isDefault", getIsDefault())
            .append("status", getStatus())
            .append("algorithmTypeId", getAlgorithmTypeId())
            .append("templateId", getTemplateId())
            .append("optimizationStrategy", getOptimizationStrategy())
            .append("usageCount", getUsageCount())
            .append("successCount", getSuccessCount())
            .append("averageScore", getAverageScore())
            .append("lastUsedTime", getLastUsedTime())
            .append("version", getVersion())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }
}